// PROGRAMA : IDCPD001 (PARA ABN)
// BIBLIOTECA : SISP
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : GEJUSPC - GERENCIA DA JUSTICA, SEGURANCA PUBLICA E
// CIDADANIA/INSTITUTO DE IDENTIFICACAO
// DATA : 29/05/2003
// OBJETIVO : DELETA REGISTROS DO SIC-RG APOS PROCESSAMENTO
// ESTE PROGRAMA DEVE SER EXECUTADO VIA JOB 'JCL1'
// 1(UMA) VEZ TODA SEXTA FEIRA
// ULTIMA EXECUCAO: 29/05/2003 AS 19:00

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcpd001A;
import br.com.vti.sisp_sicrim.antigo.model.SicRg;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;

/**
 * Classe : Idcpd001 OBJETIVO : DELETA REGISTROS DO SIC-RG APOS PROCESSAMENTO ESTE PROGRAMA DEVE SER EXECUTADO VIA JOB 'JCL1' 1(UMA) VEZ TODA SEXTA FEIRA ULTIMA EXECUCAO: 29/05/2003 AS 19:00 *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/idcpd001")
public class Idcpd001 {
	Idcpd001 idcpd001Anterior;
	// Views utilizadas
	SicRg vwsicrg = new SicRg();
	// Telas/paginas utilizadas
	Idcpd001A idcpd001A;
	// Includes utilizados
	// Areas globais / session // Funcoes/subrotinas

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;

	private int cont = 0;
	private String faseproc = "0";

	private Idcpd001A preMapas() {
		idcpd001A = new Idcpd001A(true, sessao);
		return idcpd001A;
	}

	public Idcpd001(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Idcpd001A idcpd001A) {
		try {
			main(idcpd001A);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Idcpd001A pidcpd001A) {
		if (pidcpd001A == null) {
			primeiraVez = true;
			// idcpd001A = new Idcpd001A (primeiraVez);
			idcpd001A = preMapas();
			idcpd001A.setNavegar("../idcpd001/executar");
			sessao.setAtributo("Idcpd001", this);
			result.include("idcpd001A", idcpd001A);
			idcpd001A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pidcpd001A);
		}

		idcpd001A.receberTela(false, result);
		while (vwsicrg.leituraDataNasc()) {
			if (vwsicrg.getDataNasc() < idcpd001A.getWdata()) {
				cont += 1;
				vwsicrg.exclui();
				// dao.commit();
			} else {
				// dao.rollback();
			}

		}

		idcpd001A.enviarMensagem("", String.valueOf(cont) + "==> REGISTROS DELETADOS DO SIC-RG, EM " + new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()));
		sessao.setAtributo("Idcpd001", this);
		result.include("idcpd001A", idcpd001A);
		idcpd001A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
	}

	private void restaurarEstados(Idcpd001A pidcpd001A) {
		this.idcpd001Anterior = (Idcpd001) sessao.getAtributo("Idcpd001");
		if (pidcpd001A != null) {
			idcpd001A = pidcpd001A;
		} else {
			idcpd001A = this.idcpd001Anterior.idcpd001A;
		}
		idcpd001A.setSessao(sessao);
		this.faseproc = this.idcpd001Anterior.faseproc;
	}
}
